{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# XGBoost Parameter Tuning for Otto Dataset"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "我们以Kaggle 2015年举办的Otto Group Product Classification Challenge竞赛数据为例，进行XGBoost参数调优探索。\n",
    "\n",
    "竞赛官网：https://www.kaggle.com/c/otto-group-product-classification-challenge/data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "首先 import 必要的模块"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "# path to where the data lies\n",
    "#dpath = '/Users/qing/desktop/XGBoost/data/'\n",
    "dpath = './'\n",
    "train = pd.read_csv(dpath +\"FE_train.csv\")\n",
    "#train.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Variable Identification"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Target 分布，看看各类样本分布是否均衡"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.countplot(train.Disbursed);\n",
    "pyplot.xlabel('Disbursed');\n",
    "pyplot.ylabel('Number of customers');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "每类样本分布不是很均匀，所以交叉验证时也考虑各类样本按比例抽取"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "由于电脑老旧，故取1%的数据用于完成训练测试任务，集中精力放在参数调优的学习上。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "y = train['Disbursed']\n",
    "X = train.drop(['Disbursed'], axis=1)\n",
    "\n",
    "X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.99,random_state=4)\n",
    "\n",
    "# drop ids and get labels\n",
    "y_train = y_train\n",
    "X_train = X_train.drop(['ID','DOB','LoggedIn','Unnamed: 26'], axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "各类样本不均衡，交叉验证是采用StratifiedKFold，在每折采样时各类样本按比例采样"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# prepare cross validation\n",
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "再次调整弱分类器数目"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "def modelfit(alg, X_train, y_train, useTrainCV=True, cv_folds=None, early_stopping_rounds=100):\n",
    "    \n",
    "    if useTrainCV:\n",
    "        xgb_param = alg.get_xgb_params()\n",
    "        #xgb_param['num_class'] = 9\n",
    "        \n",
    "        xgtrain = xgb.DMatrix(X_train, label = y_train)\n",
    "        \n",
    "        cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()['n_estimators'], folds =cv_folds,\n",
    "                         metrics='logloss', early_stopping_rounds=early_stopping_rounds)\n",
    "        \n",
    "        n_estimators = cvresult.shape[0]\n",
    "        alg.set_params(n_estimators = n_estimators)\n",
    "        print (\"Best n_estimators:\", n_estimators)\n",
    "        print (cvresult)\n",
    "        #result = pd.DataFrame(cvresult)   #cv缺省返回结果为DataFrame\n",
    "        #result.to_csv('my_preds.csv', index_label = 'n_estimators')\n",
    "        cvresult.to_csv('my_preds4_2_3_58.csv', index_label = 'n_estimators')\n",
    "        \n",
    "        # plot\n",
    "        test_means = cvresult['test-logloss-mean']\n",
    "        test_stds = cvresult['test-logloss-std'] \n",
    "        \n",
    "        train_means = cvresult['train-logloss-mean']\n",
    "        train_stds = cvresult['train-logloss-std'] \n",
    "\n",
    "        x_axis = range(0, n_estimators)\n",
    "        pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "        pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "        pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "        pyplot.xlabel( 'n_estimators' )\n",
    "        pyplot.ylabel( 'Log Loss' )\n",
    "        pyplot.savefig( 'n_estimators4_2_3_58.png' )\n",
    "    \n",
    "    #Fit the algorithm on the data\n",
    "    alg.fit(X_train, y_train, eval_metric='logloss')\n",
    "        \n",
    "    #Predict training set:\n",
    "    train_predprob = alg.predict_proba(X_train)\n",
    "    logloss = log_loss(y_train, train_predprob)\n",
    "\n",
    "        \n",
    "    #Print model report:\n",
    "    print (\"logloss of train :\" )\n",
    "    print (logloss)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best n_estimators: 65\n",
      "    train-logloss-mean  train-logloss-std  test-logloss-mean  test-logloss-std\n",
      "0             0.607081           0.000211           0.607235          0.000756\n",
      "1             0.535462           0.001377           0.536407          0.002118\n",
      "2             0.474944           0.001414           0.475914          0.001970\n",
      "3             0.424266           0.001649           0.425346          0.001245\n",
      "4             0.380312           0.002021           0.381637          0.001371\n",
      "5             0.342651           0.001612           0.343935          0.002001\n",
      "6             0.309606           0.001826           0.310947          0.001811\n",
      "7             0.281748           0.002209           0.282888          0.001969\n",
      "8             0.257298           0.002084           0.259274          0.003055\n",
      "9             0.235659           0.001622           0.237937          0.003140\n",
      "10            0.216201           0.001592           0.219060          0.003723\n",
      "11            0.199598           0.002210           0.202973          0.003391\n",
      "12            0.184566           0.001690           0.189180          0.003728\n",
      "13            0.171685           0.001396           0.177078          0.003454\n",
      "14            0.159687           0.000866           0.165560          0.004065\n",
      "15            0.149058           0.000970           0.155889          0.004245\n",
      "16            0.139339           0.001132           0.147154          0.004683\n",
      "17            0.130791           0.000993           0.139206          0.004378\n",
      "18            0.123363           0.001209           0.132313          0.004543\n",
      "19            0.116540           0.001233           0.125766          0.005513\n",
      "20            0.110298           0.001178           0.120584          0.004990\n",
      "21            0.104706           0.001377           0.115677          0.005400\n",
      "22            0.099551           0.001426           0.111417          0.005889\n",
      "23            0.095155           0.001602           0.107812          0.005916\n",
      "24            0.090849           0.001499           0.103699          0.005462\n",
      "25            0.086755           0.001223           0.100872          0.006149\n",
      "26            0.083589           0.001346           0.097818          0.005796\n",
      "27            0.080675           0.001443           0.095394          0.006211\n",
      "28            0.077691           0.001563           0.093339          0.006285\n",
      "29            0.074910           0.001481           0.091560          0.006496\n",
      "..                 ...                ...                ...               ...\n",
      "35            0.062891           0.001973           0.083648          0.007657\n",
      "36            0.061536           0.001872           0.082926          0.007436\n",
      "37            0.059902           0.002090           0.082385          0.007649\n",
      "38            0.058660           0.002324           0.081835          0.008141\n",
      "39            0.057444           0.002081           0.080511          0.008461\n",
      "40            0.056561           0.002322           0.080335          0.008455\n",
      "41            0.055375           0.001864           0.079754          0.009019\n",
      "42            0.054497           0.001727           0.079422          0.009568\n",
      "43            0.053690           0.001765           0.079056          0.009172\n",
      "44            0.052640           0.001576           0.078866          0.009736\n",
      "45            0.051971           0.001150           0.078079          0.009867\n",
      "46            0.051158           0.001056           0.078530          0.010083\n",
      "47            0.050391           0.001189           0.078219          0.010027\n",
      "48            0.049922           0.001083           0.078331          0.010042\n",
      "49            0.049250           0.001281           0.078041          0.009480\n",
      "50            0.048642           0.000987           0.077938          0.009746\n",
      "51            0.047900           0.000972           0.077930          0.010119\n",
      "52            0.047244           0.001095           0.077709          0.010308\n",
      "53            0.046788           0.000872           0.077696          0.010007\n",
      "54            0.046388           0.000851           0.077953          0.010388\n",
      "55            0.046034           0.001090           0.077451          0.010407\n",
      "56            0.045766           0.001189           0.077544          0.010731\n",
      "57            0.045489           0.001314           0.077698          0.010856\n",
      "58            0.045201           0.001581           0.077543          0.010431\n",
      "59            0.045285           0.001644           0.077210          0.010345\n",
      "60            0.044886           0.001600           0.076863          0.010579\n",
      "61            0.044569           0.001584           0.076822          0.010820\n",
      "62            0.044177           0.001792           0.076777          0.010392\n",
      "63            0.044095           0.001726           0.076973          0.010287\n",
      "64            0.043460           0.001767           0.076144          0.009665\n",
      "\n",
      "[65 rows x 4 columns]\n",
      "logloss of train :\n",
      "0.040467577508179704\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#调整max_depth和min_child_weight之后再次调整n_estimators\n",
    "xgb2_3 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=1000,  #数值大没关系，cv会自动返回合适的n_estimators\n",
    "        max_depth=4,\n",
    "        min_child_weight=0.4,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel=0.7,\n",
    "        objective= 'binary:logistic',\n",
    "        seed=3)\n",
    "\n",
    "modelfit(xgb2_3, X_train, y_train, cv_folds = kfold)\n",
    "#from sklearn.model_selection import cross_val_score\n",
    "#results = cross_val_score(xgb2_3, X_train, y_train, metrics='mlogloss', cv=kfold)\n",
    "#print results\n",
    "#print(\"CV logloss: %.2f%% (%.2f%%)\" % (results.mean()*100, results.std()*100))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/jhony/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:1: FutureWarning: from_csv is deprecated. Please use read_csv(...) instead. Note that some of the default arguments are different, so please refer to the documentation for from_csv when changing your function calls\n",
      "  \"\"\"Entry point for launching an IPython kernel.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1000x1000 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "cvresult = pd.DataFrame.from_csv('my_preds4_2_3_58.csv')\n",
    "\n",
    "cvresult = cvresult.iloc[20:]\n",
    "# plot\n",
    "test_means = cvresult['test-logloss-mean']\n",
    "test_stds = cvresult['test-logloss-std'] \n",
    "        \n",
    "train_means = cvresult['train-logloss-mean']\n",
    "train_stds = cvresult['train-logloss-std'] \n",
    "\n",
    "x_axis = range(20,cvresult.shape[0]+20)\n",
    "        \n",
    "fig = pyplot.figure(figsize=(10, 10), dpi=100)\n",
    "pyplot.errorbar(x_axis, test_means, yerr=test_stds ,label='Test')\n",
    "pyplot.errorbar(x_axis, train_means, yerr=train_stds ,label='Train')\n",
    "pyplot.title(\"XGBoost n_estimators vs Log Loss\")\n",
    "pyplot.xlabel( 'n_estimators' )\n",
    "pyplot.ylabel( 'Log Loss' )\n",
    "pyplot.savefig( 'n_estimators_detail4_2_3_58.png' )\n",
    "\n",
    "pyplot.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "最佳值：Best n_estimators: 65"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
